package org.jetlinks.pro.dashboard;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 仪表盘管理器，用于统一提供仪表盘数据支持。
 * 仪表盘功能以下要素组成:
 *
 * <ul>
 *     <li>{@link Dashboard} 仪表盘：一类监控数据的分类,比如: 系统监控,设备监控。由多个对象{@link DashboardObject}组成。</li>
 *     <li>{@link DashboardObject} 仪表盘对象,例如: CPU，内存，设备状态等。由多个监控指标{@link Measurement}组成。</li>
 *     <li>{@link Measurement}监控指标,例如: CPU使用率,设备在线状态等.由多个维度{@link MeasurementDimension}组成。</li>
 *     <li>{@link MeasurementDimension}指标维度,例如: 实时CPU使用率,设备历史状态等.通过此接口获取对应等监控数据</li>
 * </ul>
 *
 * @author zhouhao
 * @since 1.0
 */
public interface DashboardManager {

    /**
     * 获取全部仪表盘
     *
     * @return 全部仪表盘
     */
    Flux<Dashboard> getDashboards();

    /**
     * 根据ID获取仪表盘
     *
     * @param id ID
     * @return 仪表盘
     */
    Mono<Dashboard> getDashboard(String id);

}
